package initialize

import (
	"counter-help/admin/server/task"
	"fmt"

	"go.uber.org/zap"

	"github.com/robfig/cron/v3"

	"counter-help/admin/server/global"
)

func Timer() {
	global.GVA_LOG.Info("开始初始化定时任务...")

	go func() {
		var option []cron.Option
		option = append(option, cron.WithSeconds())

		// 清理DB定时任务
		_, err := global.GVA_Timer.AddTaskByFuncWithSecond("ClearDB", "0 0 0 * * *", func() {
			global.GVA_LOG.Info("执行定时清理数据库任务...")
			err := task.ClearTable(global.GVA_DB) // 定时任务方法定在task文件包中
			if err != nil {
				global.GVA_LOG.Error("定时清理数据库失败", zap.Error(err))
				fmt.Println("timer error:", err)
			} else {
				global.GVA_LOG.Info("定时清理数据库任务执行成功")
			}
		}, "定时清理数据库【日志，黑名单】内容", option...)
		if err != nil {
			global.GVA_LOG.Error("添加清理数据库定时任务失败", zap.Error(err))
			fmt.Println("add timer error:", err)
		} else {
			global.GVA_LOG.Info("清理数据库定时任务添加成功，每日00:00执行")
		}

		// 重置UUID当日访问次数定时任务，每天9:40执行
		_, err = global.GVA_Timer.AddTaskByFuncWithSecond("ResetDailyAccess", "0 0 0 * * *", func() {
			global.GVA_LOG.Info("执行UUID当日访问次数重置任务...")
			err := task.ResetUUIDDailyAccess(global.GVA_DB) // 重置UUID当日访问次数
			if err != nil {
				global.GVA_LOG.Error("重置UUID当日访问次数失败", zap.Error(err))
				fmt.Println("reset daily access error:", err)
			} else {
				global.GVA_LOG.Info("重置UUID当日访问次数任务执行成功")
			}
		}, "定时重置UUID当日访问次数", option...)
		if err != nil {
			global.GVA_LOG.Error("添加UUID重置定时任务失败", zap.Error(err))
			fmt.Println("add reset daily access timer error:", err)
		} else {
			global.GVA_LOG.Info("UUID重置定时任务添加成功，每日09:40执行")
		}

		global.GVA_LOG.Info("所有定时任务初始化完成")

		// 其他定时任务定在这里 参考上方使用方法

		//_, err := global.GVA_Timer.AddTaskByFunc("定时任务标识", "corn表达式", func() {
		//	具体执行内容...
		//  ......
		//}, option...)
		//if err != nil {
		//	fmt.Println("add timer error:", err)
		//}
	}()
}
